---

# Format Ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions

# Required to un-FUBAR default ${{github.workflow}} value
name: rerun_cirrus_cron

on:
    # Note: This only applies to the main branch.
    schedule:
        # N/B: This should fire about an hour prior to check_cirrus_cron
        # so the re-runs have a chance to complete.
        - cron:  '01 01 * * 1-5'
    # Debug: Allow triggering job manually in github-actions WebUI
    workflow_dispatch: {}
    # Allow re-use of this workflow by other repositories
    # Ref: https://docs.github.com/en/actions/using-workflows/reusing-workflows
    workflow_call:
      secrets:
        SECRET_CIRRUS_API_KEY:
          required : true
        ACTION_MAIL_SERVER:
          required: true
        ACTION_MAIL_USERNAME:
          required: true
        ACTION_MAIL_PASSWORD:
          required: true
        ACTION_MAIL_SENDER:
          required: true

env:
    # CSV listing of e-mail addresses for delivery failure or error notices
    RCPTCSV: podman-monitor@lists.podman.io
    # Filename for table of build-id to cron-name data
    # (must be in $GITHUB_WORKSPACE/artifacts/)
    ID_NAME_FILEPATH: './artifacts/id_name.txt'

permissions:
  contents: read

jobs:
    cron_rerun:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
              with:
                  # All scripts used by this workflow live in podman repo.
                  repository: "containers/podman"
                  ref: "main"
                  persist-credentials: false

            - name: Get failed cron names and Build IDs
              id: cron
              run: './.github/actions/check_cirrus_cron/cron_failures.sh'

            - if: steps.cron.outputs.failures > 0
              shell: bash
              env:
                SECRET_CIRRUS_API_KEY: ${{ secrets.SECRET_CIRRUS_API_KEY }}
              run: './.github/actions/check_cirrus_cron/rerun_failed_tasks.sh'

            - uses: actions/upload-artifact@v4
              with:
                  name: ${{ github.job }}_artifacts
                  path: artifacts/*

            - if: failure()
              name: Send error notification e-mail
              uses: dawidd6/action-send-mail@v3.12.0
              with:
                server_address: ${{secrets.ACTION_MAIL_SERVER}}
                server_port: 465
                username: ${{secrets.ACTION_MAIL_USERNAME}}
                password: ${{secrets.ACTION_MAIL_PASSWORD}}
                subject: Github workflow error on ${{github.repository}}
                to: ${{env.RCPTCSV}}
                from: ${{secrets.ACTION_MAIL_SENDER}}
                body: "Job failed: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}"
